Collection Decorators এর ভূমিকা

Java Technologies - অ্যাপাচি কমন্স কালেকশনস (Apache Common Collection) Decorators এবং Wrapped Collections |
130
130

Apache Commons Collections লাইব্রেরির Collection Decorators ক্লাসগুলি Java Collections Framework (JCF)-এর ডেটা স্ট্রাকচারে অতিরিক্ত কার্যকারিতা যোগ করার জন্য ব্যবহৃত হয়। Decorator pattern হল একটি স্ট্রাকচারাল ডিজাইন প্যাটার্ন যা অবজেক্টের উপর নতুন ফাংশনালিটি যোগ করার জন্য ব্যবহৃত হয়, কোন কিছুর মূল স্ট্রাকচার পরিবর্তন না করে। এটি একই সময় existing object এর আচরণ পরিবর্তন বা প্রসারিত করতে সাহায্য করে।

১. Collection Decorators কী?

Collection Decorators হল এমন ক্লাস যা collections এর কার্যকারিতা বাড়াতে বা কাস্টমাইজ করতে ব্যবহৃত হয়। একে wrapper objects হিসেবে ভাবা যেতে পারে, যেখানে একটি ইন্টারফেস বা ক্লাসের অভ্যন্তরে অন্য একটি collection অবজেক্টের উপর অতিরিক্ত আচরণ যোগ করা হয়। Decorator pattern এর মাধ্যমে একটি অবজেক্টের কার্যকারিতা পরিবর্তন করার বদলে, তার উপরে নতুন ফিচার যোগ করা হয়।

যেমন, আপনি যদি একটি List বা Map এর উপর কিছু অতিরিক্ত কার্যকলাপ (যেমন সিঙ্ক্রোনাইজেশন, ইমিউটেবিলিটি) চান, তাহলে আপনি একটি Decorator ব্যবহার করতে পারেন যা ওই ফিচারটি সুনিশ্চিত করবে।

২. Collection Decorators এর প্রধান সুবিধা

  • ডেটা স্ট্রাকচারের আচরণ পরিবর্তন করা: আপনি সহজেই একটি কালেকশন স্ট্রাকচারকে immutable, synchronized, বা অন্যান্য অতিরিক্ত কার্যকারিতা দিতে পারেন।
  • অতিরিক্ত কার্যকলাপ যোগ করা: ডেকোরেটর প্যাটার্নের মাধ্যমে আপনার মূল কালেকশনের কার্যকারিতা প্রসারিত করা যায়, যেমন logging, validation, বা counting
  • কমপ্লেক্সিটি হ্যান্ডেল করা: কখনও কখনও খুব জটিল এবং কঠিন অপারেশনগুলোকে সহজ করা হয়, যেমন Thread safety বা immutable collections তৈরি করা।

৩. Collection Decorators এর উদাহরণ

Apache Commons Collections লাইব্রেরি Collection Decorators এর মাধ্যমে বিভিন্ন ধরনের অতিরিক্ত কার্যকারিতা যোগ করার সুযোগ দেয়, যেমন Synchronized collections, Unmodifiable collections, Predicated collections ইত্যাদি। নিচে কিছু সাধারণ Collection Decorators এর উদাহরণ দেওয়া হলো:

১. Unmodifiable Collections

Unmodifiable collections হল এমন কালেকশন যা immutable (অপরিবর্তনীয়), যেখানে আপনি ডেটা পরিবর্তন করতে পারবেন না। এটি সাধারণত তখন ব্যবহৃত হয় যখন আপনি চান যে, কিছু Collection ডেটা নিরাপদভাবে শুধুমাত্র পড়ার জন্য ব্যবহার করা হোক।

Unmodifiable Collection ডেকোরেটরের উদাহরণ:

import org.apache.commons.collections4.CollectionUtils;
import java.util.List;
import java.util.Arrays;

public class UnmodifiableCollectionExample {
    public static void main(String[] args) {
        List<String> list = Arrays.asList("apple", "banana", "cherry");
        
        // Creating an unmodifiable collection
        List<String> unmodifiableList = CollectionUtils.unmodifiableList(list);

        System.out.println("Unmodifiable List: " + unmodifiableList);

        // Attempting to modify will throw UnsupportedOperationException
        // unmodifiableList.add("date"); // This will throw exception
    }
}

এখানে:

  • CollectionUtils.unmodifiableList() ব্যবহার করে একটি List কে unmodifiable করা হয়েছে, যার মাধ্যমে তার উপাদান পরিবর্তন করা সম্ভব নয়।

আউটপুট:

Unmodifiable List: [apple, banana, cherry]

এটি immutable collection তৈরি করে, যেটি কোনো পরিবর্তন গ্রহণ করবে না।

২. Synchronized Collections

Synchronized Collections হল এমন কালেকশন যেগুলি একাধিক থ্রেডের মধ্যে নিরাপদভাবে ব্যবহৃত হতে পারে। যখন আপনি একাধিক থ্রেডের সাথে কাজ করেন এবং কালেকশনের উপরে একযোগে অপারেশন চালাতে চান, তখন synchronized collections ব্যবহার করা হয়।

Synchronized Collection ডেকোরেটরের উদাহরণ:

import org.apache.commons.collections4.CollectionUtils;
import java.util.List;
import java.util.Arrays;

public class SynchronizedCollectionExample {
    public static void main(String[] args) {
        List<String> list = Arrays.asList("apple", "banana", "cherry");
        
        // Creating a synchronized collection
        List<String> synchronizedList = CollectionUtils.synchronizedList(list);

        synchronized(synchronizedList) {
            synchronizedList.add("date");
            System.out.println(synchronizedList);
        }
    }
}

এখানে:

  • CollectionUtils.synchronizedList() ব্যবহার করা হয়েছে একটি List কে সিঙ্ক্রোনাইজড করার জন্য, যাতে এটি একাধিক থ্রেডের মধ্যে নিরাপদে ব্যবহার করা যায়।

আউটপুট:

[apple, banana, cherry, date]

এটি নিশ্চিত করে যে, যখন একাধিক থ্রেড একই কালেকশনের উপরে কাজ করে, তখন ডেটা সুরক্ষিত থাকে।

৩. Predicated Collections

Predicated collections হল এমন কালেকশন যা একটি নির্দিষ্ট শর্ত বা predicate (যেমন একটি ফিল্টার) এর উপর ভিত্তি করে কার্যকরী হয়। এটি আপনাকে কালেকশনের মধ্যে শুধু নির্দিষ্ট ধরনের উপাদান সংরক্ষণ করতে সাহায্য করে।

Predicated Collection ডেকোরেটরের উদাহরণ:

import org.apache.commons.collections4.CollectionUtils;
import java.util.List;
import java.util.ArrayList;

public class PredicatedCollectionExample {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("apple");
        list.add("banana");
        list.add("cherry");

        // Creating a predicated collection that only allows strings with length greater than 5
        List<String> predicatedList = CollectionUtils.predicatedList(list, str -> str.length() > 5);

        predicatedList.add("grapefruit");
        
        System.out.println(predicatedList);  // Output: [grapefruit]

        // Trying to add an invalid string
        predicatedList.add("pear");  // This will not be added
        System.out.println(predicatedList);  // Output: [grapefruit]
    }
}

এখানে:

  • CollectionUtils.predicatedList() ব্যবহার করে একটি List তৈরি করা হয়েছে, যেখানে শুধুমাত্র সেই উপাদানগুলো অন্তর্ভুক্ত হবে যেগুলোর দৈর্ঘ্য ৫ এর বেশি।

আউটপুট:

[grapefruit]
[grapefruit]

এটি কেবলমাত্র নির্দিষ্ট শর্ত পূর্ণকারী উপাদানগুলি কেবলমাত্র List-এ যোগ করতে অনুমতি দেয়।


৪. Collection Decorators এর ব্যবহারিক সুবিধা

  1. অতিরিক্ত কার্যকারিতা যোগ করা: আপনি collection decorators ব্যবহার করে বিভিন্ন ধরনের কার্যকারিতা যেমন immutable, synchronized, এবং predicated ফিল্টার যুক্ত করতে পারেন।
  2. উন্নত ডেটা নিরাপত্তা: Immutable এবং Synchronized ডেকোরেটর ব্যবহার করে ডেটা সুরক্ষা নিশ্চিত করা যায়, বিশেষত একাধিক থ্রেডের মধ্যে।
  3. ডেটা ম্যানিপুলেশন সহজ করা: Predicated এবং Unmodifiable ডেকোরেটর ব্যবহার করে আপনি ডেটার উপর ফিল্টার বা কনস্ট্রেইন্ট প্রয়োগ করতে পারেন।

সারাংশ

Collection Decorators হল একটি শক্তিশালী টুল যা Apache Commons Collections লাইব্রেরিতে Java Collections Framework-এর উপরে অতিরিক্ত কার্যকারিতা যোগ করতে ব্যবহৃত হয়। এগুলি Java ডেভেলপারদের জন্য বিভিন্ন ধরনের স্ট্যান্ডার্ড কোলেকশন ডেটা স্ট্রাকচারের উপর functional extensions প্রদান করে, যেমন immutable collections, synchronized collections, এবং predicated collectionsDecorator pattern ব্যবহার করে এই কার্যকারিতা যোগ করা হয়, যা মূল ডেটা স্ট্রাকচারের কার্যকারিতা পরিবর্তন না করে নতুন ফিচার সরবরাহ করে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion